jQuery-তে অ্যাসিনক্রোনাস (Asynchronous) টাস্কগুলোকে হ্যান্ডল করার জন্য Deferred এবং Promise ব্যবহৃত হয়। এগুলি জটিল অ্যাসিনক্রোনাস অপারেশন যেমন AJAX কল বা ডেলেইড টাস্ক ম্যানেজ করতে কার্যকর।
Deferred কী?
Deferred হলো jQuery-এর একটি অবজেক্ট, যা অ্যাসিনক্রোনাস কাজের স্টেট এবং রেজাল্ট ম্যানেজ করতে ব্যবহৃত হয়। এটি অ্যাসিনক্রোনাস কোডকে সুশৃঙ্খলভাবে পরিচালনা করতে সাহায্য করে এবং কাস্টম অ্যাসিনক্রোনাস কাজ তৈরি করতে সক্ষম।
Deferred স্টেটস:
- Pending: কাজ এখনও চলমান।
- Resolved: কাজ সফলভাবে সম্পন্ন হয়েছে।
- Rejected: কাজ ব্যর্থ হয়েছে।
Promise কী?
Promise হলো Deferred-এর মাধ্যমে ফেরত দেওয়া একটি অবজেক্ট, যা অ্যাসিনক্রোনাস কাজের ফাইনাল স্টেট (Resolved/Rejected) সম্পর্কে তথ্য প্রদান করে। এটি ডিফল্টভাবে then(), done(), এবং fail() মেথড ব্যবহার করে কাজের ফলাফল পরিচালনা করতে দেয়।
Deferred এবং Promise-এর ব্যবহার
Deferred দিয়ে অ্যাসিনক্রোনাস কাজ তৈরি করা:
function asyncTask() {
var deferred = $.Deferred();
setTimeout(function() {
if (Math.random() > 0.5) {
deferred.resolve("Task Complete"); // সফল হলে
} else {
deferred.reject("Task Failed"); // ব্যর্থ হলে
}
}, 1000);
return deferred.promise();
}
asyncTask()
.done(function(result) {
console.log(result); // "Task Complete"
})
.fail(function(error) {
console.log(error); // "Task Failed"
});
AJAX এর সাথে Promise ব্যবহার:
jQuery AJAX ডিফল্টভাবে Deferred এবং Promise ব্যবহার করে। তাই done() এবং fail() মেথড সরাসরি ব্যবহার করা যায়।
$.ajax({
url: "https://jsonplaceholder.typicode.com/posts/1",
method: "GET"
})
.done(function(data) {
console.log("Data fetched successfully:", data);
})
.fail(function(error) {
console.log("Error occurred:", error);
});
Multiple Deferred Task হ্যান্ডল করা (using $.when()):
$.when() মেথড ব্যবহার করে একাধিক অ্যাসিনক্রোনাস টাস্ক একসাথে পরিচালনা করা যায়।
var task1 = $.Deferred();
var task2 = $.Deferred();
setTimeout(function() {
task1.resolve("Task 1 Complete");
}, 1000);
setTimeout(function() {
task2.resolve("Task 2 Complete");
}, 2000);
$.when(task1, task2).done(function(result1, result2) {
console.log(result1); // "Task 1 Complete"
console.log(result2); // "Task 2 Complete"
});
Promise মেথডসমূহ
then(): একটি চেইনড কৌশল, যাdone()এবংfail()-এর সমন্বয়ে কাজ করে।done(): কাজ সফল হলে চালিত হয়।fail(): কাজ ব্যর্থ হলে চালিত হয়।always(): কাজ সফল বা ব্যর্থ যাই হোক, শেষ হলে চালিত হয়।
then() ব্যবহার:
asyncTask()
.then(function(result) {
console.log("Success:", result);
}, function(error) {
console.log("Error:", error);
});
Deferred vs Promise
| বৈশিষ্ট্য | Deferred | Promise |
|---|---|---|
| কোড তৈরি | অ্যাসিনক্রোনাস কাজ তৈরি করতে ব্যবহৃত। | শুধুমাত্র কাজ পর্যবেক্ষণ করতে ব্যবহৃত। |
| কাস্টমাইজেশন | ব্যবহারকারী কাস্টম কাজ তৈরি করতে পারে। | কাজ তৈরি করা সম্ভব নয়। |
| মেথডস | resolve(), reject(), notify() | then(), done(), fail(), always() |
Deferred এবং Promise অ্যাসিনক্রোনাস টাস্ক ম্যানেজ করার জন্য শক্তিশালী টুল। Deferred কাস্টম অ্যাসিনক্রোনাস কাজ তৈরি করতে ব্যবহৃত হয়, যেখানে Promise কাজের রেজাল্ট হ্যান্ডল করতে ব্যবহৃত হয়। জটিল অ্যাসিনক্রোনাস প্রসেসিং যেমন AJAX কল, মাল্টিপল টাস্ক ম্যানেজমেন্ট ইত্যাদির জন্য এগুলি অপরিহার্য।
Read more